// Tencent is pleased to support the open source community by making
// 蓝鲸智云 - 监控平台/日志平台 (BlueKing - Monitor/Log) available.
// Copyright (C) 2017-2022 THL A29 Limited, a Tencent company. All rights reserved.
// Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at http://opensource.org/licenses/MIT
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//

package tracesderiver

import "go.opentelemetry.io/collector/model/pdata"

const (
	ExtractorDuration = "duration"
)

type Extractor interface {
	Extract(span pdata.Span) float64
}

var ExtractorMap = map[string]Extractor{
	ExtractorDuration: DurationExtractor(),
}

// DurationExtractor

type durationExtractor struct{}

func DurationExtractor() Extractor {
	return durationExtractor{}
}

func (durationExtractor) Extract(span pdata.Span) float64 {
	return float64(span.EndTimestamp() - span.StartTimestamp())
}
